package cn.itcast.service.impl;

import cn.itcast.dao.UserDao;
import cn.itcast.dao.impl.UserDaoImpl;
import cn.itcast.dao.impl.UserDaoOracleImpl;
import cn.itcast.factory.BeanFactory;
import cn.itcast.service.UserService;

public class UserServiceImpl implements UserService {

    //1. 创建dao对象（写死）
    // private UserDao userDao = new UserDaoImpl();
    //2. 新需求：改为oracle数据库  (问题：修改代码)
    //private UserDao userDao = new UserDaoOracleImpl();

    //3. 问题：希望修改数据库，不用改这里的代码（分离变化点）
    // 目前：实现了service与dao的一定程度的接口。service依赖了dao接口，但是没有依赖实现类。
    //private UserDao userDao = (UserDao) BeanFactory.getBean("userDao");

    //4. 问题2：解决类型转换的问题，引入泛型方法
    private UserDao userDao = BeanFactory.getBean("userDao", UserDao.class);

    @Override
    public void save() {
        userDao.save();
    }
}
